﻿using EmbeddedSharp.Core.Function.Arithmetics;
using EmbeddedSharp.Core.Function.Logic;
using EmbeddedSharp.Core.Function.Maths;

namespace EmbeddedSharp.Core {
    public interface IVisitor {
        object Visit(IdentifierNode node);

        object Visit(NumberNode node);

        object Visit(StringNode node);

        object Visit(SubNode node);

        object Visit(AddNode node);

        object Visit(MulNode node);

        object Visit(ModNode node);

        object Visit(DivNode node);

        object Visit(PowerNode node);

        object Visit(LogNode node);

        object Visit(LargerThanNode node);

        object Visit(LessThanNode node);

        object Visit(LargerEqualToNode node);

        object Visit(LessEqualToNode node);

        object Visit(EqualNode node);

        object Visit(NotEqualNode node);

        object Visit(AndNode node);

        object Visit(OrNode node);

        object Visit(NotNode node);

        object Visit(FuncNode node);
    }
}
